#include "Bloque.h"
#include "ImagenES.h"

#include <iostream>

using namespace std;

Bloque::Bloque()
{
    //ctor
    bloque = NULL;
}

Bloque::~Bloque()
{
    //dtor
    if (bloque != NULL)
        LiberaPlano(64,64,&bloque);
}

int Bloque::CargarBloque(char* nombre)
{
    if (bloque != NULL)
    {
        LiberaPlano(anchura_bloque,altura_bloque,&bloque);
        bloque = NULL;
    }


    ReservaPlano(64,64,&bloque);
    if(CargaBloque(nombre,&anchura_bloque,&altura_bloque,&nivel_bloque,&subbanda_bloque,bloque))
    {
        cout << "Error al abrir el fichero: " << nombre << endl;
        return -1;
    }

    return 0;
}

void Bloque::CrearBloque(int ancho,int alto, int nivel, int subbanda)
{
    if (bloque != NULL)
    {
        LiberaPlano(64,64,&bloque);
        bloque = NULL;
    }


    anchura_bloque = ancho;
    altura_bloque = alto;
    nivel_bloque = nivel;
    subbanda_bloque = subbanda;

    ReservaPlano(ancho,alto,&bloque);
    borrar();
}

void Bloque::GuardarBloque(char* nombre)
{
    GuardaBloque(nombre,anchura_bloque,altura_bloque,nivel_bloque,subbanda_bloque,bloque);
}

int Bloque::getAlto()
{
    return altura_bloque;
}

int Bloque::getAncho()
{
    return anchura_bloque;
}

int Bloque::getBanda()
{
    return subbanda_bloque;
}

int Bloque::getNivel()
{
    return nivel_bloque;
}

int Bloque::getCoeficiente(int fila,int columna)
{
    return bloque[fila][columna];
}

int* Bloque::operator[](int n)
{
    return bloque[n];
}

void Bloque::borrar()
{
    for(int i=0;i<altura_bloque;i++)
    {
        for(int j=0; j<altura_bloque;j++)
        {
            bloque[i][j] = 0;
        }
    }
}


